// PROGRAMA : TABPE002
// BIBLIOTECA : PRODETR
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : SEJUSP - SEC. DA JUSTICA E SEGURANCA PUBLICA
// INSTITUTO DE IDENTIFICACAO, DETRAN E SEFAZ
// PROGRAMADOR : EDU/FM DATA: 27/05/92
// OBJETIVO : RELATORIO TABELA 13.
// ATUALIZACOES DATA
// PROGRAMA : TABPE002 11/11/1997
// BIBLIOTECA : SISP
// PROGRAMADOR :
// OBJETIVO : ADAPTACAO PARA O SHOPPING DO CIDADAO (P200)
// : ALTERACAO DO CAMPO ANO2(N2) PARA ANO2(N8) E DATAS
// EM 20/10/1999
// OBS : ESTE PROGRAMA FOI REESTRUTURADO POR SOLON MIRANDA

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Tabpe002Report;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Tabpe002 OBJETIVO : RELATORIO TABELA 13. *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/tabpe002")
public class Tabpe002 {
	// Views utilizadas
	SicTabelas vwDvetab = new SicTabelas();
	// Telas/relatorios utilizados
	Tabpe002Report report;
	// Includes utilizados
	Sisll001 sisll001 = new Sisll001();
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	public Tabpe002(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public InputStreamDownload executar(Integer pCodigoTabela, String pDescricaoElem) {
		try {
			return main(pCodigoTabela, pDescricaoElem);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private InputStreamDownload main(Integer pCodigoTabela, String pDescricaoElem) throws JRException, ParseException, FileNotFoundException {

		report = new Tabpe002Report();
		report.setPageSize(61);
		report.setLineSize(133);
		report.setDataCorrente(UtilBean.inverteDataCorrente());

		// //DEFINE PRINTER(EFM = 1)
		// Par�grafo: ler()
		while (vwDvetab.leituraTabdecMaiorig(pCodigoTabela, pDescricaoElem)) {
			// READADA
			report.setCodele(String.valueOf(vwDvetab.getCodigoElem()));
			report.setDesc2(vwDvetab.getDescricaoElem());
			report.setDintabDatatu(vwDvetab.getDataAtualizacao());
			report.setDintabMatfun(vwDvetab.getMatriculaFunc());
			report.setAno2(String.valueOf(UtilBean.extraiDigitos(vwDvetab.getCodigoElem(), 12, 8, 4)));
			report.setFimpl(String.valueOf(UtilBean.extraiDigitos(vwDvetab.getCodigoElem(), 12, 11, 1)));
			report.setPar1(UtilBean.subStr(vwDvetab.getDescricaoElem(), 0, 6));
			report.setPar2(UtilBean.subStr(vwDvetab.getDescricaoElem(), 6, 6));
			report.setPar3(UtilBean.subStr(vwDvetab.getDescricaoElem(), 11, 6));
			report.setCota(UtilBean.subStr(vwDvetab.getDescricaoElem(), 18, 6));
			if (vwDvetab.getCodigoTabela() != 13) {
				break;
			}

			// RELATORIO 1 PS=61 LS=133 SG=ON
			// report.gravaRelatorio(1);
			report.gravaRelatorio(2);
		}
		vwDvetab.fecha();
		return report.imprimir();
	}

}
